<TagAttribute("physics","phys","????","????",4,128)>
Public Class PHYSICS_TAG
Inherits HaloTag
Public Const Extension as String = "physics"
Public Const FourCC as String = "phys"
Public Const ParentFourCC as String = "????"
Public Const GrandParentFourCC as String = "????"
Public Const [Version] as Short = 4
Public Const HeaderLength as Integer = 128

''' <summary>
''' positive uses old inferior physics, negative uses new improved physics
''' </summary>
<TagField("radius", 1, 0)>
Public radius as Single

''' <summary>
''' 
''' </summary>
<TagField("moment scale", 1, 0)>
Public moment_scale as Single

''' <summary>
''' 
''' </summary>
<TagField("mass", 1, 0)>
Public mass as Single

''' <summary>
''' 
''' </summary>
<TagField("center of mass", 3, 2)>
Public center_of_mass as Single()

''' <summary>
''' 
''' </summary>
<TagField("density", 1, 0)>
Public density as Single

''' <summary>
''' 
''' </summary>
<TagField("gravity scale", 1, 0)>
Public gravity_scale as Single

''' <summary>
''' 
''' </summary>
<TagField("ground friction", 1, 0)>
Public ground_friction as Single

''' <summary>
''' 
''' </summary>
<TagField("ground depth", 1, 0)>
Public ground_depth as Single

''' <summary>
''' 
''' </summary>
<TagField("ground damp fraction", 1, 0)>
Public ground_damp_fraction as Single

''' <summary>
''' 
''' </summary>
<TagField("ground normal k1", 1, 0)>
Public ground_normal_k1 as Single

''' <summary>
''' 
''' </summary>
<TagField("ground normal k0", 1, 0)>
Public ground_normal_k0 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("water friction", 1, 0)>
Public water_friction as Single

''' <summary>
''' 
''' </summary>
<TagField("water depth", 1, 0)>
Public water_depth as Single

''' <summary>
''' 
''' </summary>
<TagField("water density", 1, 0)>
Public water_density as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("air friction", 1, 0)>
Public air_friction as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("xx moment", 1, 0)>
Public xx_moment as Single

''' <summary>
''' 
''' </summary>
<TagField("yy moment", 1, 0)>
Public yy_moment as Single

''' <summary>
''' 
''' </summary>
<TagField("zz moment", 1, 0)>
Public zz_moment as Single

''' <summary>
''' inertial_matrix_block
''' </summary>
<TagField("inertial matrix and inverse", 36, 11)>
Public inertial_matrix_and_inverse as List(Of INERTIAL_MATRIX_AND_INVERSE_BLOCK)

''' <summary>
''' powered_mass_point_block
''' </summary>
<TagField("powered mass points", 128, 11)>
Public powered_mass_points as List(Of POWERED_MASS_POINTS_BLOCK)

''' <summary>
''' mass_point_block
''' </summary>
<TagField("mass points", 128, 11)>
Public mass_points as List(Of MASS_POINTS_BLOCK)
Public Class INERTIAL_MATRIX_AND_INVERSE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("yy+zz    -xy     -zx", 3, 2)>
Public yy_zz as Single()

''' <summary>
''' 
''' </summary>
<TagField(" -xy    zz+xx    -yz", 3, 2)>
Public unknown as Single()

''' <summary>
''' 
''' </summary>
<TagField(" -zx     -yz    xx+yy", 3, 2)>
Public unknown_1 as Single()

End Class
Public Class POWERED_MASS_POINTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("antigrav strength", 1, 0)>
Public antigrav_strength as Single

''' <summary>
''' 
''' </summary>
<TagField("antigrav offset", 1, 0)>
Public antigrav_offset as Single

''' <summary>
''' 
''' </summary>
<TagField("antigrav height", 1, 0)>
Public antigrav_height as Single

''' <summary>
''' 
''' </summary>
<TagField("antigrav damp fraction", 1, 0)>
Public antigrav_damp_fraction as Single

''' <summary>
''' 
''' </summary>
<TagField("antigrav normal k1", 1, 0)>
Public antigrav_normal_k1 as Single

''' <summary>
''' 
''' </summary>
<TagField("antigrav normal k0", 1, 0)>
Public antigrav_normal_k0 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 68, -1)>
Public padding as Byte()

End Class
Public Class MASS_POINTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("powered mass point", 1, 23)>
Public powered_mass_point as Short

''' <summary>
''' 
''' </summary>
<TagField("model node", 1, 23)>
Public model_node as Short

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("relative mass", 1, 0)>
Public relative_mass as Single

''' <summary>
''' 
''' </summary>
<TagField("mass", 1, 0)>
Public mass as Single

''' <summary>
''' 
''' </summary>
<TagField("relative density", 1, 0)>
Public relative_density as Single

''' <summary>
''' 
''' </summary>
<TagField("density", 1, 0)>
Public density as Single

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("forward", 3, 2)>
Public forward as Single()

''' <summary>
''' 
''' </summary>
<TagField("up", 3, 2)>
Public up as Single()

''' <summary>
''' 
''' </summary>
<TagField("friction type", 1, 17)>
Public friction_type as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("friction parallel scale", 1, 0)>
Public friction_parallel_scale as Single

''' <summary>
''' 
''' </summary>
<TagField("friction perpendicular scale", 1, 0)>
Public friction_perpendicular_scale as Single

''' <summary>
''' 
''' </summary>
<TagField("radius", 1, 0)>
Public radius as Single

''' <summary>
''' 
''' </summary>
<TagField("", 20, -1)>
Public padding_1 as Byte()

End Class

End Class
